package model

import (
	"encoding/base64"
	"fmt"
	"os"
	"strings"
)

// 定义一个用户结构体
type User struct {
	Name    string // 用户名
	Pic     string // 头像图片地址
	PicName string // 用户名前两位字符
}

// 解析base64图片
func (user *User) EncodingBase64() error {
	runes := []rune(user.Name)
	user.PicName = string(runes[:2])
	if user.Pic != "" {
		splits := strings.Split(user.Pic, ",")
		// 截取文件后缀
		imgType := splits[0][strings.LastIndex(splits[0], "/")+1 : strings.LastIndex(splits[0], ";")]
		imgType = strings.Replace(imgType, "e", "", -1) // jpeg 去掉 e，改成jpg格式
		// 解码base64图片数据
		imageBytes, err := base64.StdEncoding.DecodeString(strings.Replace(user.Pic, splits[0]+",", "", 1))
		if err != nil {
			fmt.Println(err)
			return err
		}
		dirPath := "app/static/img"
		// 创建目录
		err = os.MkdirAll(dirPath, os.ModePerm)
		if err != nil {
			fmt.Println(err)
			return err
		}
		// 拼接图片路径
		//savePath := "聊天室/main/img/" + user.Name + "." + imgType
		imgPath := dirPath + "/" + user.Name + "." + imgType // 相对路径
		// 保存图片到服务器
		err = os.WriteFile(imgPath, imageBytes, 0644)
		if err != nil {
			fmt.Println(err)
			return err
		}
		user.Pic = imgPath
	}
	return nil
}
